﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AccesoDatos.Manejador;
using AccesoDatos;
using AccesoDatos.Objetos;

namespace RMA.Pantallas
{
    public partial class frmAplicarPagos : Form
    {
        private List<clsUsuarios> lstUser;
        private string Proveedor = "0";
        private string Producto = "";
        private string Rma = "";
        private int Carga = 0;
        public frmAplicarPagos()
        {
            InitializeComponent();
        }
        public frmAplicarPagos(List<clsUsuarios> _lstUser)
        {
            lstUser = _lstUser;
            InitializeComponent();
        }

        private void rbtnRmaProv_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtnRmaProv.Checked)
            {
                txtOpcion.Text = "";
                txtOpcion.Visible = true;
                cbOpcion.Visible = false;
                rbtnProducto.Checked = false;
                rbtnProveedor.Checked = false;
                InicializarVariables();
                
                
            }

        }

        private void rbtnProducto_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtnProducto.Checked)
            {
                txtOpcion.Text = "";
                txtOpcion.Visible = true;
                cbOpcion.Visible = false;
                rbtnRmaProv.Checked = false;
                rbtnProveedor.Checked = false;
                InicializarVariables();
                
                
                
            }
            
        }

        private void rbtnProveedor_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtnProveedor.Checked)
            {
                Carga = 0;
                txtOpcion.Text = "";
                txtOpcion.Visible = false;
                cbOpcion.Visible = true;
                rbtnProducto.Checked = false;
                rbtnRmaProv.Checked = false;
                CargaProveedores();
                Carga = 1;
                InicializarVariables();
                
            }
            
        }
        public void CargaProveedores()
        {
            DataTable dtProveedores = null;
            Manejador_proveedores objProv = new Manejador_proveedores();
            dtProveedores = objProv.RegresaProveedores();

            cbOpcion.DataSource = dtProveedores;
            cbOpcion.ValueMember = "CodPro";
            cbOpcion.DisplayMember = "Nombre";



        }
        public void CargaInfoPagos()
        {
            DataTable dtInfoPagos = null;
            Manejador_Pagos objPagos = new Manejador_Pagos();

            try
            {
                dtInfoPagos = objPagos.RegresaInfoPagos(Proveedor, Rma, Producto);
                dgvPrincipal.AutoGenerateColumns = false;
                dgvPrincipal.DataSource = dtInfoPagos;


            }
            catch (Exception ex)
            {
            
            }

        }

        private void cbOpcion_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (Carga != 0)
            {
                Proveedor = cbOpcion.SelectedValue.ToString();
                CargaInfoPagos();
            }
            

        }

        private void txtOpcion_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (rbtnProducto.Checked)
                {
                    Producto = txtOpcion.Text;
                    CargaInfoPagos();
                }
                else
                {
                    if (rbtnRmaProv.Checked)
                    {
                        Rma = txtOpcion.Text;
                        CargaInfoPagos();
                    }
                    else
                    {

                        Proveedor = cbOpcion.SelectedValue.ToString();
                        Producto = "";
                        Rma = "";
                        CargaInfoPagos();
                    }


                }
            }
        }

        private void btnSelTodos_Click(object sender, EventArgs e)
        {
            dgvPrincipal.SelectAll();
        }

        private void btnAplicar_Click(object sender, EventArgs e)
        {
            if (txtReferencia.Text != "")
            {
                if (cbMoneda.Text != "")
                {
                    bool Agrega = false;
                    bool AgregaNotas = false;
                    Manejador_Pagos objPagos = new Manejador_Pagos();
                    clsParametrosTramites objParametros = new clsParametrosTramites();
                    try
                    {
                        foreach (DataGridViewRow r in dgvPrincipal.SelectedRows)
                        {
                            if (cbTipoPago.Text.ToLower() == "nota crédito")
                            {
                                objParametros = new clsParametrosTramites();
                                objParametros.Folio = r.Cells[2].Value.ToString();
                                objParametros.Fecha = DateTime.Now;
                                objParametros.Id_estatus = 8;
                                objParametros.Accion = "Pagado por " + lstUser[0].Nombre;
                                objParametros.Id_usuario = lstUser[0].UsrId;
                                objParametros.Detalle = objParametros.Accion + " " + cbTipoPago.Text + " " + txtReferencia.Text + " " + txtMonto.Text + " " + cbMoneda.Text;
                                objParametros.Referencia = txtReferencia.Text;
                                objParametros.Oculto = 0;
                                Agrega = objPagos.GuardaPagos(objParametros.Folio, objParametros.Fecha, objParametros.Id_estatus, objParametros.Accion, objParametros.Id_usuario, objParametros.Detalle, objParametros.Referencia, objParametros.Oculto);
                                AgregaNotas = objPagos.GuardaNotasCredito(objParametros.Folio, txtReferencia.Text, decimal.Parse(txtMonto.Text), cbMoneda.Text);
                            }
                            else
                            {
                                objParametros = new clsParametrosTramites();
                                objParametros.Folio = r.Cells[2].Value.ToString();
                                objParametros.Fecha = DateTime.Now;
                                objParametros.Id_estatus = 8;
                                objParametros.Accion = "Pagado por " + lstUser[0].Nombre;
                                objParametros.Id_usuario = lstUser[0].UsrId;
                                objParametros.Detalle = objParametros.Accion + " " + cbTipoPago.Text + " " + txtReferencia.Text + " " + txtMonto.Text + " " + cbMoneda.Text;
                                objParametros.Referencia = txtReferencia.Text;
                                objParametros.Oculto = 0;
                                Agrega = objPagos.GuardaPagos(objParametros.Folio, objParametros.Fecha, objParametros.Id_estatus, objParametros.Accion, objParametros.Id_usuario, objParametros.Detalle, objParametros.Referencia, objParametros.Oculto);
                            }


                        }
                        MessageBox.Show("Pago(s) Aplicados Correctamente", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        CargaInfoPagos();
                        LimpiaFormulario();

                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    MessageBox.Show("Defina Moneda para continuar", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                
            }
            else
            {
                MessageBox.Show("Debe Tener una Referencia de Pago para poder aplicarlo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            
        }
        public void LimpiaFormulario()
        {
            pnlDatos.Visible = false;
            txtReferencia.Text = "";
            txtReferencia.Enabled = false;
            txtMonto.Text = "";
            txtMonto.Enabled = false;
            cbMoneda.SelectedIndex = -1;
            cbMoneda.Enabled = false;
            CargaProveedores();

        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Desea Salir? Se Perderan los Cambios", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                this.Close();
            }
            
        }
        public void InicializarVariables()
        {
            Proveedor = "";
            Rma = "";
            Producto = "";
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void cbTipoPago_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbTipoPago.SelectedItem.ToString().ToLower() == "nota crédito")
            {
                NotaCredito();
            }
            else
            {
                if (cbTipoPago.SelectedItem.ToString().ToLower() == "reemplazo")
                {
                    Reemplazo();
                }
            }
        }
        public void NotaCredito()
        {
            pnlDatos.Visible = true;
            txtReferencia.Enabled = true;
            txtMonto.Enabled = true;
            cbMoneda.Enabled = true;
            
        }
        public void Reemplazo()
        {
            pnlDatos.Visible = true;
            txtReferencia.Enabled = true;
            txtMonto.Enabled = false;
            cbMoneda.Enabled = false;
        }

        
    }
}
